The invention relates to a multiprocess computer and a method for operating same. Processes are divided into operating system routines which are controlled by respective application programs or modules thereof and user processes that are executed with respect to executing a user-required function. A typical non-limiting example, for which the invention was conceived and reduced to practice, is the VAX-11-750 Computer by Digital Equipment Corporation, Maynard, Mass., USA. Many aspects of the operating system or so-called executive thereof are described in the book "VAX/VMS Internals and Data Structures", by L. J. Kenah and S. F. Bate, published by Digital Press, Bedford Mass. USA 1984.
1. Field of the Invention
In the VAX, and also in many other computers, as the use of the present invention is not at all limited to the VAX-system, the scheduling of process execution is done by the scheduler according to either of two principles:
a. the interrupt, which means that any process or routine which needs execution can interrupt any other process or routine being executed if the former process has a higher priority level than the latter. The priority level may be specified by hardware in that the interrupts arrive via specifically assigned leads, or in that the priorities are determined upon interrogation thereof by the operating system;
b. the normal scheduling, wherein a process or routine which no longer needs execution, relinquishes the use of the processor whereupon the processor determines which process or routine must now be activated. The latter process or routine may be one for which an interrupt of too low priority level had been earlier given with respect to the interruptibility of the currently executed process or routine. Alternatively, the next process or routine is taken up from a waiting list on initiative of the processor, in that the latter inspects whether such taking up is useful. If it is not, the processor takes up the next process or routine according to some predetermined order of priority. If the waiting list is empty, a so-called "null process" is activated.
Operating system routines usually are provided with an interrupt feature. The highest interrupt priority level is the "power-down-signalization". Lower interrupt priority levels relate to I/O-handling. Operating system routines are executed in system context. User processes usually are not provided with an interrupt feature, so that they are only executed if the system software does not need activation.
2. Description of the Prior Art
It has been found that certain user processes need instant attention and could not wait until execution of all system software or other user processes of a higher priority. The process is scheduled by the system software and is the basic entity of the sequence of states assumed by the computer: it contains the address space and hardware and software context currently relevant. The process therewith comprises: a program, privileges, and other boundary conditions, if relevant; and also an address translation table and a dump space, indicating where results and data generated must be intermediately dumped if necessary. The solution in VAX is the following, see, e.g. the cited book, page 115 ff. ("Connect to interrupt mechanism") One application program module may be assigned a higher priority level in that it is allowed the interrupt feature at a higher level than the one(s) associated to the normal scheduling. The effect is that a physical memory section associated to said one program module, containing data and/or code, is put in the virtual address space of the system software. This renders said module executable. This has the following drawbacks:
a. The context, i.e. the contents of specific hardware registers, etcetera, remains unaltered upon the activation of this particular user program module. This severely limits the flexibility of the execution in that the knowledge on the point where the execution had been terminated during the most recent activation of the module is not present in the locations normally reserved therefor. In transferring from one program module to another program module, such hardware registers are conveniently used to exchange information with stacks and other dedicated provisions.
b. In execution of the activated program module, the content of the remainder of the virtual address space of the processor remains unaltered, and incompatible to the program module in question. For example, segment-table and other address-tables do not have their content updated. Therefore, the code may not refer to information outside the physical memory section referred to above. Again, this frequently hampers flexibility in programming to a great extent.